package com.kly.sc.api.application.service.user;

import com.kly.dto.UserVasPurchasesDto;
import com.kly.enums.Benefits;
import com.kly.sc.api.application.enums.BenefitsType;
import com.kly.sc.api.application.vo.MemberBenefits;
import com.kly.user.dto.UserMsgDto;

import java.util.List;

/**
 * 会员权益相关接口
 * @author linqu
 */
public interface HasMemberBenefitsValidationService {

    /**
     * 单项会员权益检查
     */
    Boolean hasSingleBenefits(Benefits benefitsType, String userCode);

    /**
     * 多项会员权益检查
     */
    List<MemberBenefits> hasBenefits(List<Benefits> benefitsTypes, String userCode);

    /**
     * 所有权益数据
     */
    List<MemberBenefits> hasAllBenefits(String userCode);

    /**
     * 用户某项权益可使用数量
     */
    Integer queryBenefitsByUserCode(Benefits benefitsType, String userCode);

    /**
     * 更新用户权益
     */
    void updateAllBenefitsForUser(String fromUserCode, String toUserCode, List<UserMsgDto> todayMessages);

    /**
     * 获取可发送的消息数
     */
    Integer getRemainSendMessageNum(String fromUserCode, String toUserCode);
}
